package kd.bos.openapi.demo.sample.operation.service;


import kd.bos.openapi.sdk.dto.OrderDto;
import kd.bos.openapi.sdk.exception.APIException;
import kd.bos.openapi.sdk.request.RequestOperatorDto;
import kd.bos.openapi.sdk.request.RequestQueryDto;
import kd.bos.openapi.sdk.response.APIResponseDto;

import java.util.Map;

/**
 * @Deacription 订单服务接口
 * @author johnzou
 * @date 2022年4月6日
 */
public interface OrderService {

    /**
     * 查找订单
     * @param billno 根据billno查询订单参数
     * @return 订单列表
     * @throws Exception 异常
     */
    String findOrdersByBillno(String billno) throws APIException;

    /**
     * 查找订单  比如：billno=003， pageSize=10， pageNo=1
     * @param queryParams 查询订单参数
     * @return 订单列表
     * @throws Exception 异常
     */
    APIResponseDto findOrdersByGet(Map<String, Object> queryParams) throws APIException;

    /**
     * 查找订单 ?billno=003&pageSize=10&pageNo=1
     * @param query 查询订单参数
     * @return 订单列表
     * @throws Exception 异常
     */
    APIResponseDto findOrders(RequestQueryDto<OrderDto> query) throws APIException;

    /**
     * 保存订单
     * @param order 订单
     * @return 保存后信息
     * @throws APIException 异常
     */
    APIResponseDto saveOrder(RequestOperatorDto<OrderDto> order) throws APIException;

    /**
     * 提交订单
     * @param order 订单
     * @return 提交后信息
     * @throws APIException 异常
     */
    APIResponseDto submitOrder(RequestOperatorDto<OrderDto> order) throws APIException;

    /**
     * 撤销订单
     * @param order 订单
     * @return 提交后信息
     * @throws APIException 异常
     */
    APIResponseDto unSubmitOrder(RequestOperatorDto<OrderDto> order) throws APIException;

    /**
     * 审核订单
     * @param order 订单
     * @return 审核后信息
     * @throws APIException 异常
     */
    APIResponseDto auditOrder(RequestOperatorDto<OrderDto> order) throws APIException;

    /**
     * 反审核订单
     * @param order 订单
     * @return 反审核后信息
     * @throws APIException 异常
     */
    APIResponseDto unAuditOrder(RequestOperatorDto<OrderDto> order) throws APIException;

    /**
     * 删除订单
     * @param order 订单
     * @return 删除后信息
     * @throws APIException 异常
     */
    APIResponseDto deleteOrder(RequestOperatorDto<OrderDto> order) throws APIException;
}
